[2025-10-12] Kafka

๐Ÿฆฅ ๋ณธ๋ฌธ

Motivation

Log Data

  • ์ข…๋ฅ˜
    1. ์‚ฌ์šฉ์ž ํ™œ๋™ ์ด๋ฒคํŠธ : ๋กœ๊ทธ์ธ, ์ข‹์•„์š”, ํด๋ฆญโ€ฆ
    2. ์šด์˜ ์ง€ํ‘œ : ์ฝœ ์Šคํƒ, ์˜ค๋ฅ˜, ์ง€์—ฐ ์‹œ๊ฐ„, ์ž์› ์‚ฌ์šฉ๋ฅ 
  • ์ธํ„ฐ๋„ท ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋™ํ–ฅ์œผ๋กœ ๋กœ๊ทธ๊ฐ€ ์ƒ์‚ฐ ๋ฐ์ดํ„ฐ์˜ ์ผ๋ถ€๊ฐ€ ๋จ. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉ
    1. ๊ฒ€์ƒ‰ ์ •ํ™•๋„
    2. ์ถ”์ฒœ ์‹œ์Šคํ…œ
    3. ๊ด‘๊ณ  ํƒ€๊ฒŒํŒ…
    4. ๋ณด์•ˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ : ์ŠคํŒธ ์ฐจ๋‹จ
    5. ๋‰ด์Šค ํ”ผ๋“œ

โ†’ ๋ฐ์ดํ„ฐ๋ณด๋‹ค ๋ณผ๋ฅจ์ด ์ปค์ง

๊ธฐ์กด์˜ ํ•œ๊ณ„

์ƒ์‚ฐ ์„œ๋ฒ„์—์„œ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๋กœ๊ทธ ํŒŒ์ผ ์Šคํฌ๋žฉํ•˜๋Š” ๋ฐฉ์‹์—์„œ ๋กœ๊ทธ ์ˆ˜์ง‘๊ธฐ๋ฅผ ๊ฐœ๋ฐœ.

  1. ๊ธฐ๋Šฅ ๋ถˆ์ผ์น˜ : ์ „๋‹ฌ ๋ณด์žฅ ๊ธฐ๋Šฅ์— ์ค‘์ ์„ ๋‘ 
    • ๋ช‡ ๊ฐœ์˜ ํŽ˜์ด์ง€ ๋ทฐ ์ด๋ฒคํŠธ๊ฐ€ ์†์‹ค๋˜๋Š” ๊ฒƒ์€ ์น˜๋ช…์ ์ด์ง€ ์•Š์Œ
    • ๊ธฐ์กด์˜ ์ˆ˜์ง‘๊ธฐ๋Š” ํŠธ๋žœ์ ์…˜ ๊ธฐ๋Šฅ์ด๋‚˜ ์†Œ๋น„๋œ ํ›„ ์Šน์ธ ๋˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉ.

    โ†’ ๊ณผ๋„ํ•œ ๊ธฐ๋Šฅ์œผ๋กœ ๋ณต์žก์„ฑ๋งŒ ์ฆ๊ฐ€.

  2. ์ฒ˜๋ฆฌ๋Ÿ‰ ๋ถ€์กฑ
  3. ๋ถ„์‚ฐ ์ง€์› ๋ฏธํก : ๋ฉ”์‹œ์ง€๋ฅผ ์—ฌ๋Ÿฌ ๋จธ์‹ ์— ๋ถ„ํ• ํ•˜๊ณ  ์ €์žฅํ•˜๋Š” ์‰ฌ์šด ๋ฐฉ๋ฒ•์ด ์—†์Œ
  4. ๋ฉ”์‹œ์ง€ ํ ๊ฐ€์šฉ์„ฑ ๋ฌธ์ œ : ๋ฉ”์‹œ์ง€์˜ ์ฆ‰๊ฐ์ ์ธ ์†Œ๋น„ ๊ฐ€์ •ํ•˜์—ฌ ๋ฉ”์‹œ์ง€ ํ ํฌ๊ธฐ๊ฐ€ ์ž‘์Œ

ํŠน์ˆ˜ ๋กœ๊ทธ ์ˆ˜์ง‘๊ธฐ ํ•œ๊ณ„

  1. ์˜คํ”„๋ผ์ธ ์†Œ๋น„ํ•˜๋„๋ก ๊ตฌ์ถ•
  2. ๋ถ„ ๋‹จ์œ„ ํŒŒ์ผ๊ณผ ๊ฐ™์ด ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๊ตฌํ˜„ ์‚ฌํ•ญ์„ ์†Œ๋น„์ž์—๊ฒŒ ๋…ธ์ถœ
  3. push ๋ชจ๋ธ์„ ์‚ฌ์šฉ : ๋ธŒ๋กœ์ปค๊ฐ€ ์†Œ๋น„์ž์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•

    โ†’ pull ๋ชจ๋ธ์ด ๋ฉ”์‹œ์ง€ ๊ณผ๋ถ€ํ•˜๋ฅผ ๋ฐฉ์ง€, rewind.

Kafka

๋ถ„์‚ฐ๋˜๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๋ฉฐ ๋†’์€ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ์ œ๊ณต์„ ์ œ๊ณตํ•˜๊ณ  messaging system๊ณผ ์œ ์‚ฌํ•œ API๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๋กœ๊ทธ ์ด๋ฒคํŠธ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์†Œ๋น„ ๊ฐ€๋Šฅ.

์˜จ๋ผ์ธ/์˜คํ”„๋ผ์ธ ์†Œ๋น„ ๋ชจ๋‘์— ๋Œ€ํ•ด ๋‹จ ํ•˜๋‚˜์˜ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹จ์ˆœํ™”

  • ์˜คํ”„๋ผ์ธ ์†Œ๋น„ : ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜์ค‘์— ์†Œ๋น„ํ•˜๊ธฐ ์œ„ํ•ด ์ €์žฅ

๊ฐœ๋…

  • topic : ํŠน์ • ์œ ํ˜•์˜ ๋ฉ”์‹œ์ง€ ์ŠคํŠธ๋ฆผ์„ ์ •์˜.
  • producer : ํ”„๋กœ๋“€์„œ๊ฐ€ ํ† ํ”ฝ์— ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐœํ–‰
  • broker : ๋ฐœํ–‰๋œ ๋ฉ”์‹œ์ง€๊ฐ€ ์ €์žฅ๋˜๋Š” ์„œ๋ฒ„ ์ง‘ํ•ฉ.
  • consumer : ๋ธŒ๋กœ์ปค๋กœ ๋ถ€ํ„ฐ ํ•œ ๊ฐœ ํ˜น์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ topic์„ ๊ตฌ๋…ํ•  ์ˆ˜ ์žˆ์Œ. ๋ฐ์ดํ„ฐ๋ฅผ pullํ•˜์—ฌ ์†Œ๋น„. ์—ฌ๋Ÿฌ consumer๊ฐ€ ํ† ํ”ฝ์˜ ๋ชจ๋“  ๋ฉ”์‹œ์ง€ ๋ณต์‚ฌ๋ณธ ํ•˜๋‚˜๋ฅผ ๊ณต๋™์œผ๋กœ ์†Œ๋น„ํ•˜๋Š” point-to-point ์ „๋‹ฌ ๋ชจ๋ธ.

    consumer๋Š” ํ† ํ”ฝ์˜ ์ž์ฒด ๋ณต์‚ฌ๋ณธ์„ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐœํ–‰/๊ตฌ๋… ๋ชจ๋ธ ์ง€์›

    • ๊ตฌ๋…

      consumer๋Š” ํ† ํ”ฝ์— ๋Œ€ํ•ด ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ฉ”์‹œ์ง€ ์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑํ•˜๊ณ  ๋ฐœํ–‰๋œ ๋ฉ”์‹œ์ง€๋Š” ํ•˜์œ„ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๊ท ๋“ฑํ•˜๊ฒŒ ๋ถ„๋ฐฐํ•œ๋‹ค.

      ๊ฐ ๋ฉ”์‹œ์ง€ ์ŠคํŠธ๋ฆผ์€ ์ง€์†์ ์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ๋ฉ”์‹œ์ง€ ์ŠคํŠธ๋ฆผ์— ๋Œ€ํ•œ iterator ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณต. iterator๋Š” ์ ˆ๋Œ€ ์ข…๋ฃŒ๋˜์ง€ ์•Š์Œ. ์†Œ๋น„ํ•˜๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ์—†์œผ๋ฉด iterator๋Š” ์ƒˆ ๋ฉ”์‹œ์ง€๊ฐ€ ๋ฐœํ–‰๋  ๋•Œ๊นŒ์ง€ block ๋จ.

      • iterator interface : ์ปฌ๋ ‰์…˜(์ง‘ํ•ฉ์ฒด)์˜ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ๋…ธ์ถœํ•˜์ง€ ์•Š์œผ๋ฉด์„œ ๊ทธ ์š”์†Œ๋“ค์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ ‘๊ทผ(์ˆœํšŒ)ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ‘œ์ค€ํ™”๋œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค
  • EX)
 producer = new Producer(โ€ฆ); 
  message = new Message(โ€œtest message strโ€.getBytes()); 
  set = new MessageSet(message); 
  producer.send(โ€œtopic1โ€, set); 
streams[] = Consumer.createMessageStreams(โ€œtopic1โ€, 1) 
  for (message : streams[0]) { 
    bytes = message.payload(); 
    // do something with the bytes  
  } 

Architecture

image.png

์—ฌ๋Ÿฌ ๋ธŒ๋กœ์ปค๋กœ ๊ตฌ์„ฑ๋œ ํด๋Ÿฌ์Šคํ„ฐ

  • ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์„ ์œ„ํ•ด ํ† ํ”ฝ์€ ์—ฌ๋Ÿฌ ํŒŒํ‹ฐ์…˜์œผ๋กœ ๋‚˜๋‰จ.
    • topic1/part1๊ณผ topic/part2 ์œผ๋กœ 2๊ฐœ์˜ ํŒŒํ‹ฐ์…˜์œผ๋กœ ๋‚˜๋‰จ
  • ๊ฐ ๋ธŒ๋กœ์ปค๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ํŒŒํ‹ฐ์…˜์„ ์ €์žฅ
  • ์—ฌ๋Ÿฌ ํ”„๋กœ๋“€์„œ์™€ ์ปจ์Šˆ๋จธ๊ฐ€ ๋™์‹œ์— ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐœํ–‰ํ•˜๊ณ  ๊ฒ€์ƒ‰

ํšจ์œจ์„ฑ (๋‹จ์ผ ํŒŒํ‹ฐ์…˜ ๋‚ด์—์„œ)

  • ๊ฐ„๋‹จํ•œ ์ €์žฅ์†Œ
    1. ๋กœ๊ทธ์™€ ํŒŒํ‹ฐ์…˜
      • ํ† ํ”ฝ์˜ ๊ฐ ํŒŒํ‹ฐ์…˜์€ ๋…ผ๋ฆฌ์  ๋กœ๊ทธ.
      • ๋กœ๊ทธ๋Š” ๋™์ผํ•œ ํฌ๊ธฐ. ์„ธ๊ทธ๋จผํŠธ ํŒŒ์ผ๋“ค๋กœ ๊ตฌํ˜„
    2. ๋ฉ”์‹œ์ง€ ๋ฐœํ–‰
      • ํ”„๋กœ๋“€์„œ๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐœํ–‰ํ•  ๋•Œ๋งˆ๋‹ค ๋ธŒ๋กœ์ปค๋Š” ๋งˆ์ง€๋ง‰ ์„ธ๊ทธ๋จผํŠธ ํŒŒ์ผ์— ์ถ”๊ฐ€
      • ์ˆœ์ฐจ์ ์œผ๋กœ ์“ฐ๊ธฐ๋กœ ์ˆ˜ํ–‰. ์ž„์˜ ์“ฐ๊ธฐ์— ๋น„ํ•ด ๋น ๋ฆ„
    3. ๋””์Šคํฌ ํ”Œ๋Ÿฌ์‹ฑ
      • ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•œ ๋ฉ”์‹œ์ง€๊ฐ€ ์Œ“์ด๋Š” ๊ฒฝ์šฐ
      • ํŠน์ • ์‹œ๊ฐ„์ด ๊ฒฝ๊ณผํ•œ ๊ฒฝ์šฐ
      • ํ”Œ๋Ÿฌ์‹ฑ ์ดํ›„์— consumer์— ๋ฉ”์‹œ์ง€๊ฐ€ ๋…ธ์ถœ๋จ.
    4. ๋ฉ”์‹œ์ง€ ID
      • ๋ช…์‹œ์  ๋ฉ”์‹œ์ง€ ID X ๋Œ€์‹  ๋…ผ๋ฆฌ์  ์˜คํ”„์…‹์œผ๋กœ ์ฃผ์†Œ ์ง€์ •

        โ†’ ๋žœ๋ค ์ ‘๊ทผ ์ธ๋ฑ์Šค ๊ตฌ์กฐ๋ฅผ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๋Š” ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ํ”ผํ•จ

      • ๋‹ค์Œ ๋ฉ”์‹œ์ง€ ID(=์˜คํ”„์…‹)๋Š” (ํ˜„์žฌ ID + ๋ฉ”์‹œ์ง€ ๊ธธ์ด)

    5. ๋ฉ”์‹œ์ง€ ์†Œ๋น„
    • consumer๊ฐ€ ํŠน์ • ํŒŒํ‹ฐ์…˜์—์„œ ์ˆœ์ฐจ์ ์œผ๋กœ ๋ฉ”์‹œ์ง€ ์†Œ๋น„
    • ํŠน์ • ๋ฉ”์‹œ์ง€๋ฅผ ์Šน์ธํ–ˆ๋‹ค๋Š” ๊ฒƒ์€ ์ด์ „ ๋ฉ”์‹œ์ง€๋ฅผ ๋ชจ๋‘ ์ˆ˜์‹ ํ–ˆ๋‹ค๋Š” ๋œป.
    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์†Œ๋น„ํ•  ๋ฐ์ดํ„ฐ ๋ฒ„ํผ๋ฅผ ์ค€๋น„ํ•˜๊ธฐ ์œ„ํ•ด ๋ธŒ๋กœ์ปค์— ๋น„๋™๊ธฐ pull ์š”์ฒญ์„ ๋ณด๋ƒ„
      • pull ์š”์ฒญ : ์†Œ๋น„๊ฐ€ ์‹œ์ž‘๋˜๋Š” ๋ฉ”์‹œ์ง€์˜ ์˜คํ”„์…‹๊ณผ ํ—ˆ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฐ”์ดํŠธ ์ˆ˜ ํฌํ•จ 1. ์˜คํ”„์…‹ ๊ด€๋ฆฌ

      image.png

      • ๊ฐ ๋ธŒ๋กœ์ปค๋Š” ๋ชจ๋“  ์„ธ๊ทธ๋จผํŠธ ํŒŒ์ผ์˜ ์ฒซ๋ฒˆ์งธ ๋ฉ”์‹œ์ง€ ์˜คํ”„์…‹์„ ํฌํ•จํ•˜๋Š” ์˜คํ”„์…‹์˜ ์ •๋ ฌ๋œ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์œ ์ง€.
      • ๊ฒ€์ƒ‰์„ ํ†ตํ•ด consumer์—๊ฒŒ ๋ณด๋ƒ„. consumer๋Š” ๋‹ค์Œ์— ์†Œ๋น„ํ•  ๋ฉ”์‹œ์ง€์˜ ์˜คํ”„์…‹์„ ๊ณ„์‚ฐํ•˜๊ณ  ๋‹ค์Œ pull ์š”์ฒญ์— ์‚ฌ์šฉ
  • ํšจ์œจ์ ์ธ ์ „์†ก
    1. ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ
      • ํ”„๋กœ๋“€์„œ : ๋‹จ์ผ ์ „์†ก ์š”์ฒญ์œผ๋กœ ๋ฉ”์‹œ์ง€ ์„ธํŠธ๋ฅผ ๋ธŒ๋กœ์ปค์— ์ œ์ถœ
      • ์ปจ์Šˆ๋จธ : ์ปจ์Šˆ๋จธ API๋Š” ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌ. pull ์š”์ฒญ์œผ๋กœ ์—ฌ๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ํ•œ ๋ฒˆ์— ๊ฒ€์ƒ‰
    2. ์šด์˜ ์ฒด์ œ ๊ธฐ๋Šฅ ํ™œ์šฉ

      ๋ฉ”์‹œ์ง€๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์บ์‹ฑํ•˜๋Š” ๊ฒƒ์„ ํ”ผํ•˜์ง€๋งŒ ๊ธฐ๋ณธ ํŒŒ์ผ ์‹œ์Šคํ…œ ํŽ˜์ด์ง€ ์บ์‹œ์— ์˜์กด

      • ์žฅ์ 
        • ์ด์ค‘ ๋ฒ„ํผ๋ง ํšŒํ”ผ : Kafka ํ”„๋กœ์„ธ์Šค ๋ฉ”๋ชจ๋ฆฌ์™€ OS ํŽ˜์ด์ง€ ์บ์‹œ์— ๋ชจ๋‘ ์ €์žฅํ•˜์ง€ ์•Š์•„ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์˜ ํšจ์œจ์ 
        • ๋ธŒ๋กœ์ปค ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žฌ์‹œ์ž‘๋˜์–ด๋„ ์šด์˜์ฒด์ œ์˜ ํŽ˜์ด์ง€ ์บ์‹œ๊ฐ€ ์œ ์ง€๋˜์–ด warm cache ์œ ์ง€
        • ๊ฐ€๋น„์ง€ ์ปฌ๋ž™์…˜ ์˜ค๋ฒ„ํ—ค๋“œ ๊ฐ์†Œ

      ํ”„๋กœ๋“€์„œ์™€ ์ปจ์Šˆ๋จธ ๋ชจ๋‘ ์„ธ๊ทธ๋จผํŠธ ํŒŒ์ผ์— ์ˆœ์ฐจ์ ์ด๊ณ  ์ž‘์€ ์–‘ ์ ‘๊ทผํ•˜์—ฌ ์ผ๋ฐ˜์ ์ธ ์บ์‹ฑ ํœด๋ฆฌ์Šคํ‹ฑ(write-through๋‚˜ read-ahead)์ด ํšจ๊ณผ์ . ๋ฐ์ดํ„ฐ ํฌ๊ธฐ์— ์„ ํ˜•์ ์œผ๋กœ ๋น„๋ก€ํ•˜์—ฌ ์„ฑ๋Šฅ์„ ๋ณด์ž„

    3. Zero-Copy

      ํ•˜๋‚˜์˜ ๋ฉ”์‹œ์ง€๊ฐ€ ์—ฌ๋Ÿฌ ์ปจ์Šˆ๋จธ์—๊ฒŒ ์—ฌ๋Ÿฌ ๋ฒˆ ์ „์†กํ•˜๋Š” ๊ฒƒ์„ ์ตœ์ ํ™”

      • ์ผ๋ฐ˜์ ์ธ ์ „์†ก ๊ณผ์ •
        1. ์ €์žฅ ๋งค์ฒด โ†’ OS์˜ ํŽ˜์ด์ง€ ์บ์‹œ๋กœ ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ
        2. ํŽ˜์ด์ง€ ์บ์‹œ โ†’ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฒ„ํผ๋กœ ๋ณต์‚ฌ
        3. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฒ„ํผ โ†’ ๋‹ค๋ฅธ ์ปค๋„ ๋ฒ„ํผ๋กœ ๋ณต์‚ฌ
        4. ์ปค๋„ ๋ฒ„ํผ โ†’ ์†Œ์ผ“์œผ๋กœ ์ „์†ก

      โ†’ sendfile API๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํŒŒ์ผ ์ฑ„๋„์—์„œ ์†Œ์ผ“ ์ฑ„๋„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ์ „์†กํ•˜์—ฌ 2~3๋‹จ๊ณ„์˜ ๋‘ ๋ฒˆ์˜ ๋ณต์‚ฌํ™” ํ•œ ๋ฒˆ์˜ ์‹œ์Šคํ…œ ์ฝœ์„ ํšŒํ”ผ

  • Stateless broker
    • ์ปจ์Šˆ๋จธ์˜ ์†Œ๋น„ ์ •๋ณด๋ฅผ ์ปจ์Šˆ๋จธ๊ฐ€ ๊ด€๋ฆฌํ•˜์—ฌ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ๋‚ฎ์ถ”์ง€๋งŒ ์–ด๋–ค ๊ตฌ๋…์ž๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ๋ชจ๋‘ ์†Œ๋น„ํ–ˆ๋Š” ์ง€ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”์‹œ์ง€ ์‚ญ์ œ ์‹œ์ ์„ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒŒ ์–ด๋ ค์›€
    • Time-based retention policy

      ์‹œ๊ฐ„ ๊ธฐ๋ฐ˜ SLA ๋ณด์กด ์ •์ฑ…. ํŠน์ • ๊ธฐ๊ฐ„(์•ฝ 7์ผ)๋ณด๋‹ค ์˜ค๋ž˜๋˜๋ฉด ์ž๋™์œผ๋กœ ์‚ญ์ œ

      • ์˜คํ”„๋ผ์ธ ์ปจ์Šˆ๋จธ๋„ ๋Œ€์ฒด๋กœ ์‹ค์‹œ๊ฐ„~์ผ๋ณ„๋กœ ์†Œ๋น„๋ฅผ ์™„๋ฃŒํ•˜์—ฌ ์ž˜ ์ž‘๋™.
      • ๋ˆ„์  ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š์Œ
    • Rewind & Re-consume

      ์ด์ „ ์˜คํ”„์…‹์„ rewind backํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ re-consume ๊ฐ€๋Šฅ

      • ์‚ฌ๋ก€
        1. ์ปจ์Šˆ๋จธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ ์žฌ์ฒ˜๋ฆฌ
        2. ์ฃผ๊ธฐ์ ์œผ๋กœ ํ”Œ๋Ÿฌ์‹ฑ ํ•˜๋Š” ๊ฒฝ์šฐ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์‹ค๋  ์ˆ˜ ์žˆ์Œ. ํ”Œ๋Ÿฌ์‹ฑ๋˜์ง€ ์•Š์€ ๋ฉ”์‹œ์ง€ ์ค‘ ๊ฐ€์žฅ ์ž‘์€ ์˜คํ”„์…‹์„ ์ฒดํฌํฌ์ธํŠธ ์‚ผ์•„ ์žฌ์†Œ๋น„ ๊ฐ€๋Šฅ

      โ†’ pull ๋ชจ๋ธ์˜ ์ด์ 

Distrinuted Coordination (๋ถ„์‚ฐ ์กฐ์ •)

  1. consumer group
    • ๊ณต๋™ ์†Œ๋น„ : ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์€ ํ•˜๋‚˜ ์ด์ƒ์˜ ์ปจ์Šˆ๋จธ๋กœ ๊ตฌ์„ฑ. ๊ตฌ๋…๋œ topic set์„ ๊ณต๋™์œผ๋กœ ์†Œ๋น„
    • ๋‹จ์ผ ์ „๋‹ฌ : ๊ฐ ๋ฉ”์‹œ์ง€๋Š” ๊ทธ๋ฃน ๋‚ด์˜ ๋‹จ ํ•˜๋‚˜์˜ ์ปจ์Šˆ๋จธ์—๊ฒŒ ์ „๋‹ฌ
    • ๋…๋ฆฝ์  ์†Œ๋น„ : ์„œ๋กœ ๋‹ค๋ฅธ ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์€ ๊ตฌ๋…๋œ ๋ฉ”์‹œ์ง€ ์ „์ฒด๋ฅผ ๊ฐ๊ฐ ๋…๋ฆฝ์ ์œผ๋กœ ์†Œ๋น„
  2. ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ์˜ ์ตœ์†Œ ๋‹จ์œ„
    • ํ† ํ”ฝ ๋‚ด์˜ ํŒŒํ‹ฐ์…˜์„ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ์˜ ์ตœ์†Œ ๋‹จ์œ„๋กœ ๋งŒ๋“ฆ
    • ํ•œ ํŒŒํ‹ฐ์…˜์˜ ๋ชจ๋“  ๋ฉ”์‹œ์ง€๊ฐ€ ๋‹จ์ผ ์ปจ์Šˆ๋จธ์— ์˜ํ•ด์„œ๋งŒ ์†Œ๋น„
      • ์—ฌ๋Ÿฌ ์ปจ์Šˆ๋จธ๊ฐ€ ์†Œ๋น„ํ•˜๋ฉด ๋™๊ธฐํ™” ์˜ค๋ฒ„ํ—ค๋“œ ํ•„์š”ํ•˜์ง€๋งŒ Kafka๋Š” ์†Œ๋น„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žฌ์กฐ์ •ํ•  ๋•Œ๋งŒ ์กฐ์ •ํ•˜๊ณ  ๋งค์šฐ ๋“œ๋ฌพ
    • over partitioning : ๋ถ€ํ•˜๊ฐ€ ๊ท ํ˜•์„ ์ด๋ฃจ๋ ค๋ฉด ํ† ํ”ฝ์˜ ํŒŒํ‹ฐ์…˜ ์ˆ˜๊ฐ€ ๊ฐ ๊ทธ๋ฃน์˜ ์ปจ์Šˆ๋จธ ์ˆ˜๋ณด๋‹ค ํ›จ์”ฌ ๋งŽ์•„์•ผ ํ•จ
  3. ๋ถ„์‚ฐ ์กฐ์ • ๋งค์ปค๋‹ˆ์ฆ˜ : Zookeeper
    • ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ ๋ถ€์žฌ : ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ๋ฅผ ์ œ๊ฑฐํ•˜์—ฌ ๋งˆ์Šคํ„ฐ ์žฅ์•  ๊ฐ€๋Šฅ์„ฑ์„ ์ œ๊ฑฐ. ์ปจ์Šˆ๋จธ๋“ค์ด ์ž์ฒด ์กฐ์ •ํ•˜๋Š” ๋งค์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉ. โ†’ ๋ณต์žก์„ฑ์„ ์ค„์ž„
    • ์ž‘์—…

      ์ฃผํ‚คํผ ์ž‘์—… ๋ชฉ์  ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ๊ฒฝ๋กœ
      ๋ณ€๋™ ๊ฐ์ง€ ๋ธŒ๋กœ์ปค ๋ฐ ์ปจ์Šˆ๋จธ์˜ ์ถ”๊ฐ€ ๋ฐ ์ œ๊ฑฐ ๊ฐ์ง€. ๋ธŒ๋กœ์ปค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ (Broker Registry), ์ปจ์Šˆ๋จธ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ (Consumer Registry)
      ์žฌ์กฐ์ • ํŠธ๋ฆฌ๊ฑฐ ๋ธŒ๋กœ์ปค/์ปจ์Šˆ๋จธ ๋ณ€๋™ ์‹œ ๊ฐ ์ปจ์Šˆ๋จธ์—๊ฒŒ ์žฌ๋ถ„๋ฐฐ(rebalance) ํ”„๋กœ์„ธ์Šค ์‹œ์ž‘์„ ์•Œ๋ฆผ. ๋ธŒ๋กœ์ปค ๋ฐ ์ปจ์Šˆ๋จธ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ์™€์ฒ˜(Watcher) ๋“ฑ๋ก.
      ๊ด€๊ณ„ ๋ฐ ์˜คํ”„์…‹ ์œ ์ง€ ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน๊ณผ ํŒŒํ‹ฐ์…˜ ๊ฐ„์˜ ์†Œ๋น„ ๊ด€๊ณ„ ๋ฐ ๋งˆ์ง€๋ง‰ ์†Œ๋น„ ์˜คํ”„์…‹ ์ถ”์ . ์†Œ์œ ๊ถŒ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ (Ownership Registry), ์˜คํ”„์…‹ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ (Offset Registry)
    • ํŠน์ง•
      • ํŒŒ์ผ ์‹œ์Šคํ…œ๊ณผ ์œ ์‚ฌํ•œ API(๊ฒฝ๋กœ ์ƒ์„ฑ, ๊ฒฝ๋กœ ๊ฐ’ ์„ค์ •/์ฝ๊ธฐ ์‚ญ์ œ ๋“ฑ)๋ฅผ ์ œ๊ณต
      • ์™€์ฒ˜ ๋“ฑ๋ก : ๊ฒฝ๋กœ์— ์™€์ฒ˜๋ฅผ ๋“ฑ๋กํ•˜์—ฌ ๊ฒฝ๋กœ์˜ ์ž์‹ ๋˜๋Š” ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ๋•Œ ์•Œ๋ฆผ โ†’ ๋ธŒ๋กœ์ปค ์„ธํŠธ ๋˜๋Š” ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์˜ ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ•  ๋•Œ๋งˆ๋‹ค ์•Œ๋ฆผ์„ ๋ฐ›์Œ
      • ๊ฒฝ๋กœ๋ฅผ ์ž„์‹œ๋กœ ์ƒ์„ฑ ๊ฐ€๋Šฅ โ†’ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํŒจํ•˜๋ฉด ์†Œ์œ ๊ถŒ ์ž๋™ ํ•ด์ œ
      • ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ๋ณต์ œํ•˜์—ฌ ์‹ ๋ขฐ์„ฑ๊ณผ ๊ฐ€์šฉ์„ฑ ์ œ๊ณต
    • ์ €์žฅ ์ •๋ณด
      • ๋ธŒ๋กœ์ปค/์ปจ์Šˆ๋จธ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ : ๊ฐ ๋ธŒ๋กœ์ปค/์ปจ์Šˆ๋จธ ์‹œ์ž‘์‹œ Zookeeper์— ์ €์žฅ
        • ๋ธŒ๋กœ์ปค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ : ๋ธŒ๋กœ์ปค์˜ ํ˜ธ์ŠคํŠธ๋ช…, ํฌํŠธ, ํ† ํ”ฝ ๋ฐ ํŒŒํ‹ฐ์…˜ ์ •๋ณด.
        • ์ปจ์Šˆ๋จธ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ : ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน๊ณผ ๊ตฌ๋… ํ† ํ”ฝ ์ •๋ณด.
      • ๊ทธ๋ฃน ๋ณ„ ๋“ฑ๋ก
        • ์†Œ์œ ๊ถŒ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ : ๊ตฌ๋…๋œ ํŒŒํ‹ฐ์…˜๋ณ„๋กœ ์†Œ๋น„์ค‘์ธ ์ปจ์Šˆ๋จธ ID ์ €์žฅ
        • ์˜คํ”„์…‹ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ : ๋งˆ์ง€๋ง‰์œผ๋กœ ์†Œ๋น„๋œ ๋ฉ”์‹œ์ง€์˜ ์˜คํ”„์…‹ ์ €์žฅ. ์˜๊ตฌ์ . ๋‚˜๋จธ์ง€๋Š” ์ž„์‹œ
    • ์žฅ์•  ์ฒ˜๋ฆฌ
      • ๋ธŒ๋กœ์ปค๊ฐ€ ์‹คํŒจํ•˜๋ฉด ๋ธŒ๋กœ์ปค ๋“ฑ๋ก์—์„œ ์ž๋™์œผ๋กœ ๊ฒฝ๋กœ ์ œ๊ฑฐ
      • ์ปจ์Šˆ๋จธ ์‹คํŒจ์‹œ ์ปจ์Šˆ๋จธ ๋“ฑ๋ก์—์„œ ํ•ด๋‹น ํ•ญ๋ชฉ์„ ์ฝ๊ณ  ์†Œ์œ ๊ถŒ ๋“ฑ๋ก์—์„œ ์†Œ์œ ํ•œ ๋ชจ๋“  ํŒŒํ‹ฐ์…˜์„ ์žƒ์Œ
    • ์žฌ๋ถ„๋ฐฐ

      ์ปจ์Šˆ๋จธ๊ฐ€ ์‹œ์ž‘๋˜๊ฑฐ๋‚˜ ๋ณ€๋™์„ ํ†ตํ•ด ์•Œ๋ฆผ์„ ๋ฐ›์œผ๋ฉด ์žฌ๋ถ„๋ฐฐ ํ”„๋กœ์„ธ์Šค ์‹œ์ž‘

      1. ์ •๋ณด ์ˆ˜์ง‘ : ์ฃผํ‚คํผ์—์„œ ํ† ํ”ฝ์˜ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ํŒŒํ‹ฐ์…˜ ์ง‘ํ•ฉ๊ณผ ๊ตฌ๋… ์ค‘์ธ ์ปจ์Šˆ๋จธ ์ง‘ํ•ฉ์„ ์ฝ์–ด์˜ด
      2. ํŒŒํ‹ฐ์…˜ ๋ถ„๋ฐฐ : ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํŒŒํ‹ฐ์…˜ ์ง‘ํ•ฉ์„ ๊ตฌ๋… ์ค‘์ธ ์ปจ์Šˆ๋จธ ์ง‘ํ•ฉ ๊ฐœ์˜ ๋ฉ์–ด๋กœ๋กœ ๋‚˜๋ˆ„๊ณ  ํ•˜๋‚˜์˜ ๋ฉ์–ด๋ฆฌ๋ฅผ ์†Œ์œ 
      3. ์†Œ์œ ๊ถŒ ๋“ฑ๋ก : ์ปจ์Šˆ๋จธ๋Š” ์†Œ์œ ๊ถŒ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ID๋ฅผ ๋“ฑ๋ก
      4. ์†Œ๋น„ ์‹œ์ž‘ : ์˜คํ”„์…‹ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ์ €์žฅ๋œ ์˜คํ”„์…‹๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ํ’€
      5. ์˜คํ”„์…‹ ์—…๋ฐ์ดํŠธ : ์ฃผ๊ธฐ์ ์œผ๋กœ ์˜คํ”„์…‹ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ์—…๋ฐ์ดํŠธ
        • ์žฌ๋ถ„๋ฐฐ ์ถฉ๋Œ ์ฒ˜๋ฆฌ : ์žฌ๋ถ„๋ฐฐ ์•Œ๋ฆผ์ด ์ปจ์Šˆ๋จธ ๋งˆ๋‹ค ์•ฝ๊ฐ„ ๋‹ค๋ฅธ ์‹œ๊ฐ„์— ์™€์„œ ์†Œ์œ ๊ถŒ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•  ๋•Œ, ๋ชจ๋“  ํŒŒํ‹ฐ์…˜์„ ํ•ด์ œํ•˜๊ณ  ์žฌ์กฐ์ • ํ”„๋กœ์„ธ์Šค๋ฅผ ์žฌ์‹œ๋„
        • ์ƒˆ ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน ์ฒ˜๋ฆฌ : ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์ด ์ƒ์„ฑ๋˜์–ด ์˜คํ”„์…‹ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ์ •๋ณด๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ์„ค์ •์— ๋”ฐ๋ผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์†Œ๋น„ ์‹œ์ž‘

์ „๋‹ฌ ๋ณด์žฅ

  1. ์ตœ์†Œ 1ํšŒ ์ „๋‹ฌ
    • ํ•œ ๋ฒˆ ์ด์ƒ ์ „๋‹ฌ. ์œ ์‹ค๋˜์ง€๋Š” ์•Š์Œ.
    • ์ค‘๋ณต ์ƒํ™ฉ : ์ปจ์Šˆ๋จธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊น”๋”ํ•˜๊ฒŒ ์ข…๋ฃŒ๋˜์ง€ ์•Š๊ณ  ์ถฉ๋Œํ•˜๋Š” ๊ฒฝ์šฐ ์ธ๊ณ„ ๋ฐ›๋Š”์ƒˆ ์ปจ์Šˆ๋จธ๋Š” ZooKeeper์— ๋งˆ์ง€๋ง‰์œผ๋กœ ์ปค๋ฐ‹๋œ ์˜คํ”„์…‹ ์ดํ›„์˜ ๋ฉ”์‹œ์ง€ ์ค‘ ์ผ๋ถ€๋ฅผ ์ค‘๋ณต ํ•ด์„œ ๋ฐ›์Œ
    • ์ค‘๋ณต ์ œ๊ฑฐ : ์ค‘๋ณต์— ๋ฏผ๊ฐํ•œ ๊ฒฝ์šฐ ์ปจ์Šˆ๋จธ์—์„œ ์ค‘๋ณต ์ œ๊ฑฐ ๋กœ์ง์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•จ. ์˜คํ”„์…‹์˜ ๊ณ ์œ ํ‚ค ์‚ฌ์šฉ
  2. ๋ฉ”์‹œ์ง€ ์ˆœ์„œ ๋ณด์žฅ
    • ๋‹จ์ผ ํŒŒํ‹ฐ์…˜์—์„œ ๋ฉ”์‹œ์ง€๊ฐ€ ์ปจ์Šˆ๋จธ์—๊ฒŒ ์ „๋‹ฌ๋˜๋Š” ์ˆœ์„œ ๋ณด์žฅ.
    • ๋‹ค๋ฅธ ํŒŒํ‹ฐ์…˜์—์„œ ์˜ค๋Š” ๋ฉ”์‹œ์ง€ ์‚ฌ์ด์˜ ์ˆœ์„œ๋Š” ๋ณด์žฅ X
  3. ๋ฌด๊ฒฐ์„ฑ
    • ๋กœ๊ทธ ์†์ƒ ๋ฐฉ์ง€
      1. ๋กœ๊ทธ์˜ ๊ฐ ๋ฉ”์‹œ์ง€์— CRC(Cyclic Redundancy Check) ๊ฐ’ ์ €์žฅ.
      2. ๋ธŒ๋กœ์ปค์— I/O ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์นดํ”„์นด๋Š” CRC๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ œ๊ฑฐํ•˜์—ฌ ๋กœ๊ทธ๋ฅผ ๋ณต๊ตฌํ•˜๋Š” ํ”„๋กœ์„ธ์Šค ์‹คํ–‰.
      3. ๋ฉ”์‹œ์ง€ ์ˆ˜์ค€์˜ CRC๋ฅผ ํ†ตํ•ด ๋ฉ”์‹œ์ง€๊ฐ€ ์ƒ์‚ฐ/์†Œ๋น„ ํ›„์— ๋„คํŠธ์›Œํฌ ์˜ค๋ฅ˜๋„ ํ™•์ธ ๊ฐ€๋Šฅ
  4. ๊ฐ€์šฉ์„ฑ
    • ์ƒํ™ฉ
      • ๋ธŒ๋กœ์ปค ๋‹ค์šด : ๋ธŒ๋กœ์ปค์— ์ €์žฅ๋œ ์•„์ง ์†Œ๋น„๋˜์ง€ ์•Š์€ ๋ฉ”์‹œ์ง€๋Š” ์‚ฌ์šฉ ๋ถˆ๊ฐ€
      • ์ €์žฅ ์‹œ์Šคํ…œ ์†์ƒ : ์†Œ๋น„๋˜์ง€ ์•Š์€ ๋ฉ”์‹œ์ง€๋Š” ์˜๊ตฌ์ ์œผ๋กœ ์œ ์‹ค
    • ํ–ฅํ›„ ๊ณ„ํš : ์ดํ›„์— ์—ฌ๋Ÿฌ ๋ธŒ๋กœ์ปค์— ์ค‘๋ณต ์ €์žฅํ•˜์—ฌ ํ•ด๊ฒฐํ•  ๊ณ„ํš

๋ฐฐํฌ ๋ฐ ํ™œ์šฉ

image.png

  • ๋ผ์ด๋ธŒ ๋ฐ์ดํ„ฐ์„ผํ„ฐ ํด๋Ÿฌ์Šคํ„ฐ : ์‚ฌ์šฉ์ž ๋Œ€๋ฉด ์„œ๋น„์Šค๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋ฐ์ดํ„ฐ ์„ผํ„ฐ ๋‚ด๋ถ€์— ์œ„์น˜
    • ํ๋ฆ„
      1. ํ”„๋ก ํŠธ์—”๋“œ ์„œ๋น„์Šค๊ฐ€ ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ batches(์ผ๊ด„ ์ฒ˜๋ฆฌ ๋ฐฉ์‹)๋กœ ๋ฐœํ–‰
      2. LB๋กœ ๋ธŒ๋กœ์ปค์— ๊ท ๋“ฑํ•˜๊ฒŒ ๋ถ„๋ฐฐ
      3. ๋™์ผํ•œ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ ๋‚ด์˜ ์˜จ๋ผ์ธ ์ปจ์Šˆ๋จธ๊ฐ€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์†Œ๋น„
  • ์˜คํ”„๋ผ์ธ ๋ถ„์„ ํด๋Ÿฌ์Šคํ„ฐ : ์˜คํ”„๋ผ์ธ ๋ถ„์„ ๋ฐ ๋ณด๊ณ  ์ง€์›
    1. ์ž„๋ฒ ๋””๋“œ ์ปจ์Šˆ๋จธ ์„ธํŠธ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์ œ
    2. Hadoop ๋ฐ ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ์ดํ„ฐ ๋กœ๋“œ ์ž‘์—… ์‹คํ–‰
      • Hadoop : ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์‚ฐ ์ฒ˜๋ฆฌํ•˜๋Š” ์˜คํ”ˆ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ๋งˆ์น˜ ์—ฌ๋Ÿฌ ๋ช…์˜ ์ผ๊พผ์ด ํ•จ๊ป˜ ํฐ ์ง์„ ๋‚˜๋ฅด๋Š” ๊ฒƒ์ฒ˜๋Ÿผ, ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ์ปดํ“จํ„ฐ์— ๋‚˜๋ˆ ์„œ ์ฒ˜๋ฆฌํ•˜์—ฌ ํšจ์œจ์„ฑ์„ ๋†’์ž…๋‹ˆ๋‹ค.
    3. ๋ณด๊ณ  ์ž‘์—… ๋ฐ ๋ถ„์„
    4. ํ”„๋กœํ† ํƒ€์ดํ•‘์— ์‚ฌ์šฉํ•˜์—ฌ ์ž„์‹œ ์ฟผ๋ฆฌ๋ฅผ ์œ„ํ•ด ์›์‹œ ์ด๋ฒคํŠธ ์ŠคํŠธ๋ฆผ์— ๋Œ€ํ•ด ๊ฐ„๋‹จํ•œ ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰
    5. ์ข…๋‹จ ๊ฐ„ ์ง€์—ฐ ์‹œ๊ฐ„์€ ์•ฝ 10์ดˆ
  • ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ
    • ๊ฐ์‚ฌ ์‹œ์Šคํ…œ
      • ๋ฉ”์‹œ์ง€ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ : ํƒ€์ž„์Šคํƒฌํ”„์™€ ์„œ๋ฒ„ ์ด๋ฆ„ ํฌํ•จ
      • ๋ชจ๋‹ˆํ„ฐ๋ง ์ด๋ฒคํŠธ : ํ”„๋กœ๋“€์„œ๋Š” ๊ณ ์ •๋œ ์‹œ๊ฐ„ ์ฐฝ ๋‚ด์—์„œ ๊ฐ ํ† ํ”ฝ์— ๋Œ€ํ•ด ๋ฐœํ–‰๋œ ๋ฉ”์‹œ์ง€ ์ˆ˜๋ฅผ ๊ธฐ๋กํ•˜๋Š” ๋ชจ๋‹ˆํ„ฐ๋ง ์ด๋ฒคํŠธ๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ƒ์„ฑ
      • ์ปจ์Šˆ๋จธ๊ฐ€ ์ˆ˜์‹ ํ•œ ๋ฉ”์‹œ์ง€ ์ˆ˜๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋ง ์ด๋ฒคํŠธ์™€ ๋น„๊ตํ•˜์—ฌ ๊ฒ€์ฆ
    • Hadoop ํ†ตํ•ฉ
      • hadoop ํด๋Ÿฌ์Šคํ„ฐ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œํ•˜๊ธฐ ์œ„ํ•ด ์นดํ”„์นด ์ž…๋ ฅ ํ˜•์‹์„ ๊ตฌํ˜„ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ์ฝ์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•จ
      • stateless ๋ธŒ๋กœ์ปค์™€ ํด๋ผ์ด์–ธํŠธ ์ธก ๋ฉ”์‹œ์ง€ ์˜คํ”„์…‹ ์ €์žฅ์„ ํ†ตํ•ด ์ž‘์—… ์žฌ์‹œ์ž‘์‹œ ์ค‘๋ณต์ด๋‚˜ ์†์‹ค ์—†์ด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋กœ๋“œ
      • ๋ฐ์ดํ„ฐ์™€ ์˜คํ”„์…‹์€ ์ž‘์—…์ด ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋œ ํ›„์—๋งŒ HDFS์— ์ €์žฅ
  • ๋ฉ”์‹œ์ง€ ์ง๋ ฌํ™”
    • Avro ์ฑ„ํƒ : ์ง๋ ฌํ™” ํ”„๋กœํ† ์ฝœ ์‚ฌ์šฉ
      • ๊ฐ ๋ฉ”์‹œ์ง€ ํŽ˜์ด๋กœ๋“œ์— ์ง๋ ฌํ™”๋œ ์Šคํ‚ค๋งˆ ID ์ €์žฅ
      • ๊ฒฝ๋Ÿ‰ ์Šคํ‚ค๋งˆ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์„œ๋น„์Šค ์‚ฌ์šฉ โ†’ ์Šคํ‚ค๋งˆ ID๋ฅผ ์‹ค์ œ ์Šคํ‚ค๋งˆ์— ๋งคํ•‘
      • ํ˜ธํ™˜์„ฑ : ์ปจ์Šˆ๋จธ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์„ ๋•Œ ์Šคํ‚ค๋งˆ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์—์„œ ์Šคํ‚ค๋งˆ๋ฅผ ์ฐพ์•„ ๋ฐ”์ดํŠธ๋ฅผ ๊ฐ์ฒด๋กœ ๋””์ฝ”๋”ฉ โ†’ ํ”„๋กœ๋“€์„œ-์ปจ์Šˆ๋จธ ๋ฐ์ดํ„ฐ ํ˜ธํ™˜์„ฑ์„ ๊ฐ•์ œ

Categories:

Updated:

Leave a comment